A number of technologies have been developed to stream media information from a source device to a target device. In the context of a digital network, the source device can comprise server functionality, and the target device can comprise a personal computer, set-top box, game console, and so forth. In a broadcast scenario, the source device can supply media information to a plurality of target devices. A target device can “tune” to receive the media information by specifying an appropriate multicast address.
In such environments, information is commonly “lost” during transmission. This results in, for example, the reception of a stream having missing packets. The loss of information can manifest itself in various artifacts in the presentation of such information. Or the loss of information can entirely disable the transmission of information. Accordingly, various mechanisms have been devised for dealing with the loss of information in transmission.
In one such technique, a target device which detects missing information can send is a message to the source device (for example, the target device can send a negative acknowledgement, i.e., NAK, message). Upon receipt of this message, the source device can supply the missing information to the target device. However, this solution may suffer from reliability problems. Namely, streaming media technology imposes real time delivery demands. It may happen that the source device cannot deliver the missing information by the time that the target device needs it. If the source device cannot remedy the “holes” in the stream of media information by the time that the target device needs to decode this information, then the presentation may suffer from visually discernable discontinuities or other problems. According to another potential problem, the source device may use a hierarchy of nodes to broadcast the media information to a plurality of target devices. In this scenario, the source device may also send missing information to target devices which do not require this information, potentially burdening these devices (which must examine and discard this information).
In another technique, a system can provide a special unicast back channel for each target device. The source device can send only those packets that are lost via the back channel. This solution may fare better in terms of reliability than the first solution. However, this solution may have scaling problems. Namely, since the system must allocate a separate channel to each device, adding more devices proportionally increases the complexity of the system, as well as the processing burden placed on the source device.
There is accordingly a need in the art to provide a mechanism for supplying missing information that is both reliable and scalable.